#include <baza.h>

void CBazaDanych::DodajKapsel(SKapsel NowyKapsel) 
{ 
	if(BazaKapsli.size() == 0) NowyKapsel.id = 0;
	else NowyKapsel.id = BazaKapsli.back().id + 1;
	BazaKapsli.push_back(NowyKapsel); 
};

bool CBazaBaz::WczytajListe()
{
	ListaBaz.clear();
	FILE *plik;
	
	char baza[255] = "";

	if(fopen_s(&plik, "bazy/base", "rt"))
		return 0;
	else
	{
		fseek(plik, 0L, SEEK_SET);
		for(; !feof(plik) ;)
		{
			fscanf(plik, "%s", baza);
			ListaBaz.push_back(baza);
		}

		fclose(plik);
		return 1;
	}

};

void CBazaBaz::ZapiszListe()
{
  FILE * file;
  file = fopen ("bazy/base","wt");
  if (file!=NULL)
  {
	for(unsigned int i = 0 ; i < ListaBaz.size() ; i++)
	{
		//TEN FRAGMENT JEST STRASZNIE NACIAGANY, POPRAWIE W WOLNEJ CHWILI
		if(ListaBaz[i] != "") {
			if(i == 0) fprintf(file,"%s",ListaBaz[i].c_str());
			else fprintf(file,"\n%s",ListaBaz[i].c_str());
		}
	}
	fclose (file);
  }

 
};

bool CBazaDanych::WczytajBaze(string nazwapliku)
{
	BazaKapsli.clear();

	FILE *plik;
	
	char browar[10] = "";
	char nazwapiwa[15] = "";
	char rodzajpiwa[10] = "";
	char kolor[10] = "";
	char smak[25] = "";
	int ocena = 0;

	nazwabazy = nazwapliku;

	nazwapliku = base64_encode(reinterpret_cast<const unsigned char*>(nazwapliku.c_str()), nazwapliku.length());
	nazwapliku = "bazy/"+nazwapliku;

	if(fopen_s(&plik, nazwapliku.c_str(), "rt"))
		return 0;
	else
	{
		fseek(plik, 0L, SEEK_SET);
		for(; !feof(plik) ;)
		{
			fscanf(plik, "%s %s %s %s %s %d", browar, nazwapiwa, rodzajpiwa, kolor, smak, &ocena);
			if(ocena == 0) continue;
			SKapsel nowy;
			nowy.browar = browar;
			nowy.nazwapiwa = nazwapiwa;
			nowy.kolor = kolor;
			nowy.ocena = ocena;
			nowy.rodzajpiwa = rodzajpiwa;
			nowy.smak = smak;
			DodajKapsel(nowy);
		}

		fclose(plik);
		
		return 1;
	}

};

bool CBazaDanych::ZapiszBaze()
{
  FILE * file;
  string nazwa = "";
  nazwa = base64_encode(reinterpret_cast<const unsigned char*>(nazwabazy.c_str()), nazwabazy.length());
  nazwa = "bazy/"+nazwa;

  file = fopen (nazwa.c_str(),"wt");
  if (file!=NULL)
  {
	for(unsigned int i = 0 ; i < BazaKapsli.size() ; i++)
	{
		if(BazaKapsli.size() == 0) continue;
		else if(BazaKapsli.size()-1 != i)
			fprintf(file,"%s %s %s %s %s %d\n", BazaKapsli[i].browar.c_str(), BazaKapsli[i].nazwapiwa.c_str(), BazaKapsli[i].rodzajpiwa.c_str(), BazaKapsli[i].kolor.c_str(), BazaKapsli[i].smak.c_str(), BazaKapsli[i].ocena);
		else
			fprintf(file,"%s %s %s %s %s %d", BazaKapsli[i].browar.c_str(), BazaKapsli[i].nazwapiwa.c_str(), BazaKapsli[i].rodzajpiwa.c_str(), BazaKapsli[i].kolor.c_str(), BazaKapsli[i].smak.c_str(), BazaKapsli[i].ocena);
	}
	fclose (file);
	return 1;
  }else 
		return 0;
};

void CBazaDanych::NowaBaza(string nazwa)
{
  BazaKapsli.clear();
  FILE * file;
  nazwa = "bazy/"+nazwa;
  file = fopen (nazwa.c_str(),"wt");
  if (file!=NULL)
  {
	fclose (file);
  }

 
};